package com.xjlsoft.weather.mapper;

import com.xjlsoft.weather.dto.GroundDataListDto;
import com.xjlsoft.weather.entity.GroundData;
import com.xjlsoft.weather.entity.GroundDataExcelDto;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.toolkit.Constants;

/**
 * <p>
 * 地面数据 Mapper 接口
 * </p>
 *
 * @author zhangbanglong
 * @since 2020-07-22
 */
@Mapper
public interface GroundDataMapper extends BaseMapper<GroundData> {
	
	/**
	 * 根据传入的 实体条件  地面数据集合
	 * */
	public IPage<GroundDataListDto>  getGroundDatasByParams(Page page, @Param(Constants.WRAPPER) Wrapper wrapper);
	
	/**
	 * 根据传入的 实体条件  地面数据集合
	 * */
	//public List<GroundDataExcelDto>  getGroundDatas();
	
	/**
	 * 根据 avgFlag标识  查询最小 数据时间<br/>
	 * @param avgFlag  0:未产生日平均 数据    1:已经产生
	 * */
	public List<String> getMinDataTime(@Param("avgFlag") String avgFlag);
	
	
	/**
	 * 根据 avgFlag标识  查询最大 数据时间<br/>
	 * @param avgFlag  0:未产生日平均 数据    1:已经产生
	 * */
	public List<String> getMaxDataTime(@Param("avgFlag") String avgFlag);
	
	/**
	 * 根据 avgFlag标识  根据data_time 降序排序 limit 7条数据<br/>
	 * 周数据 如何统计   降序排序 取7天的数据  如果 数据真的 有7天的数据 则生成周平均数据
	 * */
	public List<String> getIdByAvgFlag(@Param("avgFlag") String avgFlag);
	
	
	/**
	 * 根据年份 和月份 查询 数据总数 <br/>
	 * 月平均 数据  判断 下个月是否存在 数据 存在则统计上一个月的  月平均数据
	 * */
	public int getCountByYearMon(@Param("yearStr") String yearStr,@Param("monStr") String monStr);
	
	
	/**
	 * 根据年份 数据总数 <br/>
	 * 年平均 数据  判断 下一年 时候存在数据  存在 则统计上一年的 年平均数据
	 * */
	public int getCountByYear(@Param("yearStr") String yearStr);
	
	
	
	public List<String> getIdByDataTime(@Param("dataTimeStr") String dataTimeStr);
	
	public List<String> getIdByYearMonDay(@Param("yearStr") String yearStr,@Param("monStr") String monStr,@Param("dayStr") String dayStr);

	public List<String> getMaxDataTime2();
	
}
